// @ts-ignore
/* eslint-disable */
// import { request } from 'umi';

import request from '@/plugins/globalRequest'; //导入自定义的请求处理器

/**
 * 定义全局的接口
 */

/** 获取当前的用户 GET /api/user/getCurrent */
export async function getCurrentUser(options?: { [key: string]: any }) {
  return request<API.BaseResponse<API.CurrentUser>>('/api/user/getCurrent', {
    //返回当前登录的用户信息，注意特殊地方拆箱

    method: 'GET',
    ...(options || {}),
  });
}

/** 退出登录接口 POST /api/user/logout */
export async function outLogin(options?: { [key: string]: any }) {
  return request<API.BaseResponse<number>>('/api/user/logout', {
    method: 'POST',
    ...(options || {}),
  });
}

/**
 * 登录接口 http://localhost:8080/api/user/login
 * 需要注意：跨域问题需要在后端服务器层面解决：控制层添加@CrossOrigin注解
 *
 * 跨域问题的第二种解决方式：前端使用该框架自带的代理来请求后端  【正向代理】
 * 需要在 /config/proxy.ts 文件中配置
 *
 * 其他解决方式：Nginx
 *
 * @param body 表单所提交的登录请求参数封装对象【Json对象】：account、password
 * @param options --
 */
export async function login(body: API.LoginParams, options?: { [key: string]: any }) {
  //返回结果LoginResult需要定义为后端返回的user对象
  return request<API.BaseResponse<API.CurrentUser>>('/api/user/login', {
    //前缀会自动拼接上在app.tsx文件中自定义的全局请求地址
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    //{
    //  "account": 表单中输入的userAccount字段值
    //  "password": 表单中输入的password字段值
    //{
    ...(options || {}),
  });
}

/**
 * 注册接口 http://localhost:8080/api/user/register

 * @param body 表单所提交的注册请求参数封装对象【Json对象】：account、password、checkPassword
 * @param options --
 */
export async function resigter(body: API.RegisterParams, options?: { [key: string]: any }) {
  //返回结果LoginResult需要定义为后端返回的user对象
  return request<API.BaseResponse<API.RegisterResult>>('/api/user/register', {
    //前缀会自动拼接上在app.tsx文件中自定义的全局请求地址
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    //{
    //  "account": 表单中输入的userAccount字段值
    //  "password": 表单中输入的password字段值
    //  "checkPassword"： 表单中输入的确认密码
    //{
    ...(options || {}),
  });
}

/**
 * 获取所有用户信息接口：返回一个存放CurrentUser的数组
 * @param options
 */
export async function searchUsers(options?: { [key: string]: any }) {
  return request<API.BaseResponse<API.CurrentUser[]>>('/api/user/searchUsers', {
    method: 'GET',
    ...(options || {}),
  });
}

/** 此处后端没有提供注释 GET /api/notices */
export async function getNotices(options?: { [key: string]: any }) {
  return request<API.NoticeIconList>('/api/notices', {
    method: 'GET',
    ...(options || {}),
  });
}

/** 获取规则列表 GET /api/rule */
export async function rule(
  params: {
    // query
    /** 当前的页码 */
    current?: number;
    /** 页面的容量 */
    pageSize?: number;
  },
  options?: { [key: string]: any },
) {
  return request<API.RuleList>('/api/rule', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}

/** 新建规则 PUT /api/rule */
export async function updateRule(options?: { [key: string]: any }) {
  return request<API.RuleListItem>('/api/rule', {
    method: 'PUT',
    ...(options || {}),
  });
}

/** 新建规则 POST /api/rule */
export async function addRule(options?: { [key: string]: any }) {
  return request<API.RuleListItem>('/api/rule', {
    method: 'POST',
    ...(options || {}),
  });
}

/** 删除规则 DELETE /api/rule */
export async function removeRule(options?: { [key: string]: any }) {
  return request<Record<string, any>>('/api/rule', {
    method: 'DELETE',
    ...(options || {}),
  });
}
